Skip to content

docs: update i18n README sample profiles and normalize property order#269

Merged
nullvariant merged 2 commits into
mainfrom
docs/update-readme-i18n-names-and-zh-tw
Feb 5, 2026
Merged

docs: update i18n README sample profiles and normalize property order#269
nullvariant merged 2 commits into
mainfrom
docs/update-readme-i18n-names-and-zh-tw

Conversation

@nullvariant

@nullvariant nullvariant commented Feb 5, 2026

Copy link
Copy Markdown
Owner

User description

Summary

  • Update sample profile names/emails to gender-neutral names in 13 languages (ain, haw, hu, ko, ru, ryu, tlh, tok, uk, zh-CN, zh-TW, x-pirate, x-shakespeare)
  • Normalize JSON property order in all 26 language READMEs to match SSOT: id → name → email → service → icon → description → sshKeyPath → sshHost → gpgKeyId
  • Regenerate root README.md from en/README.md
  • zh-TW: structural changes (identity → profile terminology)

Changes

  • 27 README files modified (26 i18n + 1 root)
  • Property order normalization: All JSON examples now follow the canonical order from the log file (SSOT)
  • Name/email updates: Gender-neutral sample names aligned with SSOT for each language
  • x-shakespeare: Full rework from character-based (Hamlet/Macbeth/Romeo/Juliet) to unified "William the Bard"
  • x-pirate: Updated from Blackbeard/Smith/Jolly to "Cap'n Morgan"
  • tlh: Fixed remaining "Operative" → "Qapla'" references
  • ain: Already updated (カムイ レㇻ → シサㇺ) in previous session, property order normalized

Test plan

  • Verify JSON examples in all 26 READMEs are valid and property order matches SSOT
  • Verify root README.md is correctly regenerated from en/README.md
  • Spot-check sample names/emails match the log file for each language
  • Verify no images or unrelated files are included

🤖 Generated with Claude Code


PR Type

Documentation


Description

  • Update sample profile names to gender-neutral alternatives across 13 language READMEs (ain, haw, hu, ko, ru, ryu, tlh, tok, uk, zh-CN, zh-TW, x-pirate, x-shakespeare)

  • Normalize JSON property order in all 26 i18n READMEs to canonical sequence: id → name → email → service → icon → description → sshKeyPath → sshHost → gpgKeyId

  • Restructure zh-TW README with terminology changes (identity → profile) and UI-based workflow updates

  • Unify character-based sample profiles: x-shakespeare (Hamlet/Macbeth/Romeo/Juliet → William the Bard), x-pirate (Blackbeard/Smith/Jolly → Cap'n Morgan), tlh (Worf/Martok → Qapla')

  • Regenerate root README.md from en/README.md with consistent property ordering

  • Update documentation hashes in documentationInternal.ts to reflect all content changes


Diagram Walkthrough

flowchart LR
  A["26 i18n READMEs<br/>+ Root README"] -->|"Update sample<br/>names"| B["Gender-neutral<br/>profiles"]
  A -->|"Normalize<br/>property order"| C["Canonical JSON<br/>structure"]
  A -->|"Restructure<br/>zh-TW"| D["Identity file<br/>terminology"]
  B --> E["Updated<br/>documentation"]
  C --> E
  D --> E
  E -->|"Regenerate"| F["Root README.md"]
  E -->|"Update hashes"| G["documentationInternal.ts"]
Loading

File Walkthrough

Relevant files
Documentation
28 files
documentationInternal.ts
Update documentation hashes for i18n README changes           

extensions/git-id-switcher/src/ui/documentationInternal.ts

  • Updated hash values for 27 i18n README files to reflect content
    changes
  • Updated hash for root README.md file
  • All hash updates correspond to documentation changes in the PR (sample
    names, property order normalization, terminology updates)
+27/-27 
README.md
Restructure zh-TW README with identity file terminology and UI updates

extensions/git-id-switcher/docs/i18n/zh-TW/README.md

  • Changed terminology from "身份" (identity) to "身分檔案" (identity file)
    throughout
  • Updated demo image URL and added lazy loading attribute
  • Restructured setup instructions with new UI-based identity management
    workflow
  • Reorganized feature list and added new "身分檔案管理" (Identity File
    Management) section
  • Normalized JSON property order to: id → name → email → service → icon
    → description → sshKeyPath → sshHost → gpgKeyId
  • Expanded troubleshooting and SSH configuration guidance with detailed
    explanations
+159/-194
README.md
Unify x-shakespeare sample profiles to William the Bard   

extensions/git-id-switcher/docs/i18n/x-shakespeare/README.md

  • Unified all sample identities to use "William the Bard" as the common
    name
  • Changed character-based names (Hamlet, Macbeth, Romeo, Juliet) to
    unified persona
  • Updated email addresses from character-themed to standardized format
    (william@personal.example.com, etc.)
  • Normalized JSON property order to: id → name → email → service → icon
    → description → sshKeyPath → sshHost → gpgKeyId
  • Updated SSH config comments and host aliases to use generic names
    (github-work, bitbucket.org)
+80/-80 
README.md
Update ain README with gender-neutral sample name               

extensions/git-id-switcher/docs/i18n/ain/README.md

  • Updated sample name from "カムイ レㇻ" to "シサㇺ" (gender-neutral Ainu name)
  • Updated email addresses from kamuy@ to sisam@
  • Normalized JSON property order to: id → name → email → service → icon
    → description → sshKeyPath → sshHost → gpgKeyId
  • Updated all example configurations and references to use new name
+36/-36 
README.md
Update uk README with gender-neutral sample name                 

extensions/git-id-switcher/docs/i18n/uk/README.md

  • Updated sample name from "Саша Іваненко" to "Саша Коваленко"
    (gender-neutral Ukrainian name)
  • Updated email addresses from ivanenko@ to kovalenko@
  • Normalized JSON property order to: id → name → email → service → icon
    → description → sshKeyPath → sshHost → gpgKeyId
  • Updated all example configurations and references to use new name
+36/-36 
README.md
Update hu README with gender-neutral sample name                 

extensions/git-id-switcher/docs/i18n/hu/README.md

  • Updated sample name from "Alex Kovács" to "Nagy Alex" (gender-neutral
    Hungarian name)
  • Updated email addresses from kovacs@ to nagy@
  • Normalized JSON property order to: id → name → email → service → icon
    → description → sshKeyPath → sshHost → gpgKeyId
  • Updated all example configurations and references to use new name
+36/-36 
README.md
Update haw README with gender-neutral sample name               

extensions/git-id-switcher/docs/i18n/haw/README.md

  • Updated sample name from "Keola Mahina" to "Kai Kalani"
    (gender-neutral Hawaiian name)
  • Updated email addresses from keola@ to kai@
  • Normalized JSON property order to: id → name → email → service → icon
    → description → sshKeyPath → sshHost → gpgKeyId
  • Updated all example configurations and references to use new name
+36/-36 
README.md
Update ryu README with gender-neutral sample name               

extensions/git-id-switcher/docs/i18n/ryu/README.md

  • Updated sample name from "比嘉太郎" to "比嘉真" (gender-neutral Ryukyuan
    name)
  • Updated email addresses from tarou@ to makoto@
  • Normalized JSON property order to: id → name → email → service → icon
    → description → sshKeyPath → sshHost → gpgKeyId
  • Updated all example configurations and references to use new name
+36/-36 
README.md
Update tlh README with unified Qapla' sample name               

extensions/git-id-switcher/docs/i18n/tlh/README.md

  • Updated sample names from character-based (Worf, Martok) to unified
    "Qapla'" (Klingon gender-neutral name)
  • Updated email addresses from worf@/martok@ to qapla@
  • Normalized JSON property order to: id → name → email → service → icon
    → description → sshKeyPath → sshHost → gpgKeyId
  • Updated SSH config comments and host aliases to use generic names
+36/-36 
README.md
Update x-pirate README with unified Cap'n Morgan name       

extensions/git-id-switcher/docs/i18n/x-pirate/README.md

  • Updated sample names from character-based (Blackbeard, Edward Teach,
    Jolly Roger) to unified "Cap'n Morgan"
  • Updated email addresses from blackbeard@/teach@/jolly@ to morgan@
  • Normalized JSON property order to: id → name → email → service → icon
    → description → sshKeyPath → sshHost → gpgKeyId
  • Updated SSH config comments and host aliases to use generic names
+40/-40 
README.md
Normalize x-lolcat README property order                                 

extensions/git-id-switcher/docs/i18n/x-lolcat/README.md

  • Normalized JSON property order to: id → name → email → service → icon
    → description → sshKeyPath → sshHost → gpgKeyId
  • Maintained existing sample names (Ceiling Cat, Keyboard Cat, Grumpy
    Cat, Nyan Cat) as they are already gender-neutral
  • Updated all example configurations to follow canonical property order
+22/-22 
README.md
Russian README: Gender-neutral name and property order normalization

extensions/git-id-switcher/docs/i18n/ru/README.md

  • Updated sample profile name from Саша Иванов to Саша Петров throughout
    the file
  • Updated email addresses from sasha.ivanov@* to sasha.petrov@* across
    all examples
  • Normalized JSON property order to id → name → email → service → icon →
    description → sshKeyPath → sshHost → gpgKeyId
  • Updated git clone examples and GPG key references to use new name
+34/-34 
README.md
Toki Pona README: Unified gender-neutral name and property order

extensions/git-id-switcher/docs/i18n/tok/README.md

  • Updated sample profile names from jan pona/jan lawa/jan musi to
    unified jan Mun
  • Updated email addresses to use mun@* domain across all examples
  • Normalized JSON property order to id → name → email → service → icon →
    description → sshKeyPath → sshHost → gpgKeyId
  • Updated git clone examples and GPG key references to use new name
+36/-36 
README.md
Korean README: Gender-neutral name and property order normalization

extensions/git-id-switcher/docs/i18n/ko/README.md

  • Updated sample profile name from 김민 to 김하늘 throughout the file
  • Updated email addresses from kim.min@* to haneul@* across all examples
  • Normalized JSON property order to id → name → email → service → icon →
    description → sshKeyPath → sshHost → gpgKeyId
  • Updated git clone examples and GPG key references to use new name
+36/-36 
README.md
Esperanto README: JSON property order normalization           

extensions/git-id-switcher/docs/i18n/eo/README.md

  • Normalized JSON property order to id → name → email → service → icon →
    description → sshKeyPath → sshHost → gpgKeyId
  • Reordered properties in all configuration examples to match canonical
    order
  • No name or email changes in this language version
+16/-16 
README.md
Turkish README: JSON property order normalization               

extensions/git-id-switcher/docs/i18n/tr/README.md

  • Normalized JSON property order to id → name → email → service → icon →
    description → sshKeyPath → sshHost → gpgKeyId
  • Reordered properties in all configuration examples to match canonical
    order
  • No name or email changes in this language version
+16/-16 
README.md
Bulgarian README: JSON property order normalization           

extensions/git-id-switcher/docs/i18n/bg/README.md

  • Normalized JSON property order to id → name → email → service → icon →
    description → sshKeyPath → sshHost → gpgKeyId
  • Reordered properties in all configuration examples to match canonical
    order
  • No name or email changes in this language version
+16/-16 
README.md
Simplified Chinese README: Gender-neutral name and property order

extensions/git-id-switcher/docs/i18n/zh-CN/README.md

  • Updated sample profile name from 张伟 to 张晨 throughout the file
  • Updated email addresses from zhangwei@* to zhangchen@* across all
    examples
  • Normalized JSON property order to id → name → email → service → icon →
    description → sshKeyPath → sshHost → gpgKeyId
  • Updated example tables and documentation references to use new name
+19/-19 
README.md
Polish README: JSON property order normalization                 

extensions/git-id-switcher/docs/i18n/pl/README.md

  • Normalized JSON property order to id → name → email → service → icon →
    description → sshKeyPath → sshHost → gpgKeyId
  • Reordered properties in all configuration examples to match canonical
    order
  • No name or email changes in this language version
+9/-9     
README.md
German README: JSON property order normalization                 

extensions/git-id-switcher/docs/i18n/de/README.md

  • Normalized JSON property order to id → name → email → service → icon →
    description → sshKeyPath → sshHost → gpgKeyId
  • Reordered properties in all configuration examples to match canonical
    order
  • No name or email changes in this language version
+16/-16 
README.md
Czech README: JSON property order normalization                   

extensions/git-id-switcher/docs/i18n/cs/README.md

  • Normalized JSON property order to id → name → email → service → icon →
    description → sshKeyPath → sshHost → gpgKeyId
  • Reordered properties in all configuration examples to match canonical
    order
  • No name or email changes in this language version
+9/-9     
README.md
French README: JSON property order normalization                 

extensions/git-id-switcher/docs/i18n/fr/README.md

  • Normalized JSON property order to id → name → email → service → icon →
    description → sshKeyPath → sshHost → gpgKeyId
  • Reordered properties in all configuration examples to match canonical
    order
  • No name or email changes in this language version
+9/-9     
README.md
Italian README: JSON property order normalization               

extensions/git-id-switcher/docs/i18n/it/README.md

  • Normalized JSON property order to id → name → email → service → icon →
    description → sshKeyPath → sshHost → gpgKeyId
  • Reordered properties in all configuration examples to match canonical
    order
  • No name or email changes in this language version
+9/-9     
README.md
Brazilian Portuguese README: JSON property order normalization

extensions/git-id-switcher/docs/i18n/pt-BR/README.md

  • Normalized JSON property order to id → name → email → service → icon →
    description → sshKeyPath → sshHost → gpgKeyId
  • Reordered properties in all configuration examples to match canonical
    order
  • No name or email changes in this language version
+9/-9     
README.md
Spanish README: JSON property order normalization               

extensions/git-id-switcher/docs/i18n/es/README.md

  • Normalized JSON property order to id → name → email → service → icon →
    description → sshKeyPath → sshHost → gpgKeyId
  • Reordered properties in all configuration examples to match canonical
    order
  • No name or email changes in this language version
+9/-9     
README.md
Japanese README: JSON property order normalization             

extensions/git-id-switcher/docs/i18n/ja/README.md

  • Normalized JSON property order to id → name → email → service → icon →
    description → sshKeyPath → sshHost → gpgKeyId
  • Reordered properties in all configuration examples to match canonical
    order
  • No name or email changes in this language version
+8/-8     
README.md
English README: JSON property order normalization               

extensions/git-id-switcher/docs/i18n/en/README.md

  • Normalized JSON property order to id → name → email → service → icon →
    description → sshKeyPath → sshHost → gpgKeyId
  • Reordered properties in all configuration examples to match canonical
    order
  • No name or email changes in this language version
+8/-8     
README.md
Root README: JSON property order normalization and regeneration

extensions/git-id-switcher/README.md

  • Normalized JSON property order to id → name → email → service → icon →
    description → sshKeyPath → sshHost → gpgKeyId
  • Reordered properties in all configuration examples to match canonical
    order
  • Root README regenerated from en/README.md with consistent property
    ordering
+8/-8     

- Update sample profile names/emails to gender-neutral names in 13 languages
  (ain, haw, hu, ko, ru, ryu, tlh, tok, uk, zh-CN, zh-TW, x-pirate, x-shakespeare)
- Normalize JSON property order in all 26 language READMEs to match SSOT:
  id → name → email → service → icon → description → sshKeyPath → sshHost → gpgKeyId
- Regenerate root README.md from en/README.md
- zh-TW: structural changes (identity → profile terminology)

🖥️ IDE: [Cursor](https://cursor.sh)
🔌 Extension: [Claude Code](https://claude.ai/download)

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Model-Raw: claude-opus-4-5-20251101
@qodo-code-review

qodo-code-review Bot commented Feb 5, 2026

Copy link
Copy Markdown

PR Compliance Guide 🔍

Below is a summary of compliance checks for this PR:

Security Compliance
External resource privacy

Description: The README adds multiple externally-hosted image URLs (e.g.,
https://assets.nullvariant.com/.../zh-TW/demo.webp, first-ux.webp,
identity-management.webp) which can leak reader metadata (IP, user agent, referrer) to the
remote host when the documentation is rendered in browsers/marketplaces, so confirm this
is intentional and acceptable for your privacy model.
README.md [32-214]

Referred Code
<img src="https://assets.nullvariant.com/nullvariant-vscode-extensions/extensions/git-id-switcher/images/zh-TW/demo.webp" width="600" alt="示範" loading="lazy">

## 🎯 為什麼選擇 Git ID Switcher?

雖然有很多 Git 身分檔案切換工具,但 **Git ID Switcher** 解決了其他工具往往忽略的複雜問題:

1. **子模組的困擾**: 在包含子模組的儲存庫(如 Hugo 主題、vendor 函式庫)中工作時,通常需要為*每個*子模組手動設定 `git config user.name`。本擴充功能透過遞迴地將身分檔案套用到所有活動子模組,優雅地解決了這個問題。
2. **SSH 和 GPG 處理**: 它不僅僅是變更名稱;它還會在 ssh-agent 中切換 SSH 金鑰並設定 GPG 簽署,確保您不會使用錯誤的簽章進行提交。

## 功能特色

- **身分檔案管理 UI**: 無需編輯 settings.json,即可新增、編輯、刪除和重新排序身分檔案
- **一鍵切換身分檔案**: 即時變更 Git user.name 和 user.email
- **狀態列整合**: 隨時一目了然地查看目前身分檔案
- **子模組支援**: 自動將身分檔案傳播到 Git 子模組
- **SSH 金鑰管理**: 自動在 ssh-agent 中切換 SSH 金鑰
- **GPG 簽署支援**: 設定用於提交簽署的 GPG 金鑰(選用)
- **豐富的工具提示**: 包含描述和 SSH 主機的詳細身分檔案資訊
- **跨平台**: 支援 macOS、Linux 和 Windows
- **多語言**: 支援 17 種語言



 ... (clipped 162 lines)
Ticket Compliance
🎫 No ticket provided
  • Create ticket/issue
Codebase Duplication Compliance
Codebase context is not defined

Follow the guide to enable codebase context checks.

Custom Compliance
🟢
Generic: Comprehensive Audit Trails

Objective: To create a detailed and reliable record of critical system actions for security analysis
and compliance.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Meaningful Naming and Self-Documenting Code

Objective: Ensure all identifiers clearly express their purpose and intent, making code
self-documenting

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Robust Error Handling and Edge Case Management

Objective: Ensure comprehensive error handling that provides meaningful context and graceful
degradation

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Error Handling

Objective: To prevent the leakage of sensitive system information through error messages while
providing sufficient detail for internal debugging.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Logging Practices

Objective: To ensure logs are useful for debugging and auditing without exposing sensitive
information like PII, PHI, or cardholder data.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Security-First Input Validation and Data Handling

Objective: Ensure all data inputs are validated, sanitized, and handled securely to prevent
vulnerabilities

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

  • Update
Compliance status legend 🟢 - Fully Compliant
🟡 - Partial Compliant
🔴 - Not Compliant
⚪ - Requires Further Human Verification
🏷️ - Compliance label

@codecov-commenter

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@qodo-code-review

qodo-code-review Bot commented Feb 5, 2026

Copy link
Copy Markdown

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
General
Add missing SSH properties to example
Suggestion Impact:Instead of adding sshKeyPath/sshHost to the Bitbucket example, the commit removed the Bitbucket SSH config block and removed the Bitbucket identity example entirely, eliminating the inconsistency in a different way.

code diff:

@@ -99,13 +99,6 @@
     User git
     IdentityFile ~/.ssh/id_ed25519_work
     IdentitiesOnly yes
-
-# Bitbucket Account
-Host bitbucket.org
-    HostName bitbucket.org
-    User git
-    IdentityFile ~/.ssh/id_ed25519_bitbucket
-    IdentitiesOnly yes

Act III: Configure the Extension

@@ -133,22 +126,6 @@
"description": "Is this a merge conflict I see before me?",
"sshKeyPath": "~/.ssh/id_ed25519_work",
"sshHost": "github-work"

  • },
  • {
  •  "id": "freelance",
    
  •  "name": "William the Bard",
    
  •  "email": "william@freelance.example.com",
    
  •  "service": "GitLab",
    
  •  "icon": "🪶",
    
  •  "description": "But soft, what code through yonder window breaks?"
    
  • },
  • {
  •  "id": "bitbucket",
    
  •  "name": "William the Bard",
    
  •  "email": "william@bitbucket.example.com",
    
  •  "service": "Bitbucket",
    
  •  "icon": "🌹",
    
  •  "description": "O Git, Git! Wherefore art thou Git?"
    
    }

</details>


___

**Add the <code>sshKeyPath</code> and <code>sshHost</code> properties to the <code>bitbucket</code> identity example to <br>align it with the accompanying SSH configuration.**

[extensions/git-id-switcher/docs/i18n/x-shakespeare/README.md [145-152]](https://github.com/nullvariant/nullvariant-vscode-extensions/pull/269/files#diff-835a568457f14a973325d6358f9af710d195e5cbb0a2aa50bbfceba87fb50067R145-R152)

```diff
 {
   "id": "bitbucket",
   "name": "William the Bard",
   "email": "william@bitbucket.example.com",
   "service": "Bitbucket",
   "icon": "🌹",
-  "description": "O Git, Git! Wherefore art thou Git?"
+  "description": "O Git, Git! Wherefore art thou Git?",
+  "sshKeyPath": "~/.ssh/id_ed25519_bitbucket",
+  "sshHost": "bitbucket.org"
 }

[Suggestion processed]

Suggestion importance[1-10]: 5

__

Why: The suggestion correctly identifies that the initial bitbucket example is inconsistent with the SSH setup shown earlier, but a later, more complete example in the same file already includes the proposed properties, making this a minor consistency fix.

Low
Update username to reflect full name

In the Korean documentation, change the example GitHub username from haneul to
kimhaneul to make it more realistic and culturally consistent.

extensions/git-id-switcher/docs/i18n/ko/README.md [153-154]

 # 개인 ID (기본 github.com 사용)
-git clone git@github.com:haneul/repo.git
+git clone git@github.com:kimhaneul/repo.git
  • Apply / Chat
Suggestion importance[1-10]: 4

__

Why: The suggestion offers a valid cultural localization improvement for the Korean documentation, making the example username more realistic by including the family name.

Low
  • Update

Remove extra identities (bitbucket, freelance) and SSH config from
Quick Start in x-shakespeare, x-pirate, x-lolcat to match the ja
SSOT pattern: Quick Start = 2 accounts (personal + work),
Full Example = 4 accounts.

🖥️ IDE: [Cursor](https://cursor.sh)
🔌 Extension: [Claude Code](https://claude.ai/download)

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Model-Raw: claude-opus-4-5-20251101
@sonarqubecloud

sonarqubecloud Bot commented Feb 5, 2026

Copy link
Copy Markdown

@nullvariant nullvariant merged commit d5f4408 into main Feb 5, 2026
21 checks passed
@nullvariant nullvariant deleted the docs/update-readme-i18n-names-and-zh-tw branch February 5, 2026 08:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants